package com.zte.claa.inficombo.csa.app.comm.csif;

import java.nio.charset.Charset;

import com.zte.claa.inficombo.csa.app.comm.csif.mina.msg.CSIFMessage;
import com.zte.claa.inficombo.csa.app.comm.csif.mina.msg.CSIFMsgBody;
import com.zte.claa.inficombo.csa.app.comm.csif.mina.msg.CSIFMsgHead;

public class CSIFMessageBuilder {
	public static final String CHARSET_UTF8 = "UTF-8";

	/**
	 * 构造CSIFMessage
	 * 
	 * @param jsonCmd
	 * @return
	 */
	public static CSIFMessage buildMessage(String jsonCmd){
		return CSIFMessageBuilder.buildMessage(jsonCmd, CHARSET_UTF8);
	}
	
	/**
	 *  构造CSIFMessage
	 *  
	 * @param jsonCmd
	 * @param charsetName
	 * @return
	 */
	public static CSIFMessage buildMessage(String jsonCmd, String charsetName){
		CSIFMessage msg = new CSIFMessage();
		CSIFMsgHead head = new CSIFMsgHead();
		CSIFMsgBody body = new CSIFMsgBody();		
		body.setData(jsonCmd);
		Charset charset = Charset.forName(charsetName);
		int len = jsonCmd.getBytes(charset).length;
		// msglen = data.len+1(end)
		head.setMsgLen(len+1);		
		msg.setBody(body);
		msg.setHead(head);		
		return msg;
	}
	
	/**
	 * 解析CSIF消息（包括命令和响应）。
	 * 
	 * @param csifMessage
	 * @return
	 */
	public static String parseMessage(CSIFMessage csifMessage){
		if(csifMessage == null){
			return null;
		}
		CSIFMsgBody body = csifMessage.getBody();
		if(body == null){
			return null;
		}
		return body.getData();
	}
}
